package com.tian.arch.base

import androidx.annotation.MainThread

/**
 * 定义loadable接口
 */
interface ILoadable {
    @MainThread
    fun showLoading(message: String? = null)

    @MainThread
    fun hideLoading()
}

/**
 *  定义LoadingState状态
 *
 *  注意这里'sealed'密封类的使用 ， 密封类的直接子类只能与密闭类在同一个文件中，并且不能直接实例化密闭类，只能实例化其子类
 *
 */
sealed class LoadingState(var message: String? = null) {
    class Loading(message: String? = null) : LoadingState(message)
    class Hide : LoadingState()

    companion object  {
        fun createLoading(message: String? = null) = Loading(message)
        fun createHide() = Hide()
    }
}

